nAG Fortran コンパイラ 7.1 マニュアル

 
ナビゲーション:前へ   上へ   次へ

11.2 データ宣言

  • [5.3] 実体が(型宣言文もしくは成分定義文で)初期化される場合、その配列境界と文字長を初期化式で使用できます。
  • [7.0] EQUIVALENCE文とCOMMON文、およびBLOCK DATAプログラム単位は、廃止されたと見なされます(-f2018オプションが使用されている場合はそのように報告されます)。
  • [7.1] 次元数引継ぎ仮引数は任意の次元数の実引数を受け入れます。つまり実引数の次元数を引継ぎます。 ここでの次元数はゼロである可能性があります。つまり、実引数がスカラーである可能性があります。 さらに、次元数引継ぎ仮引数はALLOCATABLEまたはPOINTER属性を持つことができるため、任意の次元数の割付可能変数/ポインター変数を受け入れることができます。

    書式は以下の通りです:

      Real,Dimension(..) :: a, b
      Integer :: c(..)
    
    上記は3つの変数(仮引数でなければならない)が次元数引継ぎであることを宣言します。

    Fortran内での次元数引継ぎ仮引数の使用は非常に制限されています。 基本的には、組込照会関数とSELECT RANK構文がありますが、その他の場合、別の次元数引き継ぎ引数に対応する他の手続きへの実引数でのみ利用できます。

    次元数引継ぎの主な用途は、高度なC相互運用性です(後のセクションを参照)。

    以下は、Fortran内での非常に簡単な使用例です。

      Program assumed_rank_example
        Real x(1,2),y(3,4,5,6,7)
        Call showrank(1.5)
        Call showrank(x)
        Call showrank(y)
      Contains
        Subroutine showrank(a)
          Real,Intent(In) :: a(..)
          Print *,'Rank is',Rank(a)
        End Subroutine
      End Program
    
    上記は以下を出力します。
     Rank is 0
     Rank is 2
     Rank is 5
    
  • [7.1] TYPE(*)型指定子を使用して、スカラー、大きさ引継ぎ、および次元数引継ぎの仮引数を宣言できます。 このような引数は型引継ぎと呼ばれ、対応する実際の引数はどの型でもかまいません。 これにはALLOCATABLECODIMENSIONINTENT(OUT)POINTER、またはVALUE属性を含めることはできません。

    型引継ぎ変数は、Fortranで直接使用する方法が非常に制限されています。

    • 実引数として別の型引継ぎ仮引数に渡すことができます。
    • 組込関数IS_CONTIGUOUSLBOUNDPRESENTSHAPESIZE、またはUBOUNDの最初の引数として出現する場合があります。
    • 関数C_LOCISO_C_BINDING組込みモジュール内)の引数として使用できます。
    上記以外のコンテクストでは、他の方法で使用することはできません。 配列の場合、添字を付けたり、部分配列を作成したりすることはできません。

    主にCプログラムとの相互運用に役立ちます(後のセクションを参照)。 非総称手続き参照の場合はスカラー引数を大きさ引継ぎ配列の型引継ぎ引数に渡すことができることに注意してください。

© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks